﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Basicas
{
    [Serializable]
    public class Matricula
    {
        private int id;
        private Turma turma;
        private Desconto desconto;
        private Aluno aluno;
        private FormaPagamento formaPagamento;
        private Boolean statusPagamento;
        private Double valorPago;
        private DateTime dataMatricula;

        #region Construtores
        public Matricula(Turma turma, Desconto desconto, Aluno aluno, FormaPagamento pagamento, Boolean status, Double valor, DateTime data)
        :this(0, turma, desconto, aluno, pagamento, status, valor, data)
        {            
        }

        public Matricula(Turma turma, Aluno aluno, FormaPagamento pagamento, Boolean status, Double valor, DateTime data)
        :this(0, turma, null, aluno, pagamento, status, valor, data)
        {            
        }

        public Matricula(int id, Turma turma, Desconto desconto, Aluno aluno, FormaPagamento pagamento, Boolean status, Double valor, DateTime data)
        {
            this.Id = id;
            this.Turma = turma;
            this.Desconto = desconto;
            this.Aluno = aluno;
            this.FormaPagamento = pagamento;
            this.StatusPagamento = status;
            this.ValorPago = valor;
            this.DataMatricula = data;
        }
        public Matricula()
        {
        }
        #endregion

        #region Propriedades
        public int Id
        {
            get { return this.id; }
            set { this.id = value; }
        }

        public Turma Turma
        {
            get { return this.turma; }
            set { this.turma = value; }
        }

        public Desconto Desconto
        {
            get { return this.desconto; }
            set { this.desconto = value; }
        }

        public Aluno Aluno
        {
            get { return this.aluno; }
            set { this.aluno = value; }
        }

        public FormaPagamento FormaPagamento
        {
            get { return formaPagamento; }
            set { formaPagamento = value; }
        }

        public Boolean StatusPagamento
        {
            get { return this.statusPagamento; }
            set { this.statusPagamento = value; }
        }

        public Double ValorPago
        {
            get { return this.valorPago; }
            set { this.valorPago = value; }
        }

        public DateTime DataMatricula
        {
            get { return this.dataMatricula; }
            set { this.dataMatricula = value; }
        }
        #endregion
    }
}